package thread;

//练习,100张票三人卖
public class WindowTest2  implements Runnable {
	private int ticket = 100;
	@Override
	public void run() {
		while (true) {
			if (ticket <= 0) {
				return;
			}
			System.out.println(Thread.currentThread().getName() + "-->售出第：" + (101 - ticket) + "票");
			ticket--;
			try {
				Thread.sleep(50);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {

		WindowTest2 wt1 = new WindowTest2();
		//创建三个线程，并启动，通过的是同一个对象来创建，所以票数可以是非静态的
		new Thread(wt1).start();
		new Thread(wt1).start();
		new Thread(wt1).start();
		//线程安全问题:同一个时间，多个线程访问（修改）同一个对象，造成结果不可预测（混乱）
		//线程安全问题的条件：1.同一时间、2.多个线程一起访问、3操作的是同一个对象
		/*输出的部分结果：
		 * Thread-1-->售出第：1票 
		 * Thread-0-->售出第：1票 
		 * Thread-2-->售出第：1票 
		 * Thread-1-->售出第：4票
		 * Thread-2-->售出第：4票 
		 * Thread-0-->售出第：4票 
		 * Thread-1-->售出第：7票 
		 * Thread-2-->售出第：7票
		 * Thread-0-->售出第：7票
		 */

	}
}

